module.exports = (options, app) => {
    return async function auth(ctx, next) {
        // 判断你是不是管理员
        const { authorization } = ctx.request.header // 拿到authorization
        if (authorization) {
            try {
                const token = authorization.split('Bearer ')[1] // 截取出token
                const jwt = require('jsonwebtoken')
                const user = jwt.verify(token, '1903A') // 校验token
                ctx.user = user; // 将解析出来的数据向后传给控制器
                await next() // 下一步
            } catch (err) {
                ctx.status = 401;// 无权限
                ctx.body = "token有误" + err.message
            }
        } else {
            ctx.status = 401;// 无权限
            ctx.body = "你没权限"
        }
    }
};

// jsonwebtoken
// jwt.sign({}, 秘钥) 加密 =》 生成token
// jwt.verify(token, 秘钥) 解密 =》 校验token


// 1. 前端登录  在登录接口中获取token
// 2. 前端吧token存储到本地存储比如localStorage
// 3. 前端每次发起接口 都吧token放到header中的authorization
// 4. 后端写个中间件 去判断前端请求的header里authorization的有效性 是否有效
// 5. 有效则下一步
// 6. 无效则返回401

// token有效期多久
// token怎么刷新 何时去刷新 怎么做无痛刷新
// token 你存储到哪里  我拿走直接用怎么（加密存到本地存储  用的时候在解密）
